feat: add OpenLibrary types and API client #15
Merged
+145
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Closes #4 — the data-layer foundation:
src/types.ts:Bookdomain type + OpenLibrary search response types (OpenLibrarySearchDoc,OpenLibrarySearchResponse,CoverSize)src/api/openLibrary.ts:searchBooksBySubject()(field-filteredsearch.jsonrequest,limit10),coverUrl()helper, defensive normalization (?? []/?? nullfor missing fields)src/api/openLibrary.test.ts: 5 unit tests with stubbed fetch (no network) — normalization defaults, request params (subject/limit/fields), error handling, cover URLsNotes for reviewers
staleTime/caching comes withuseBooks(feat: useBooks hook with TanStack Query and App integration #12) — this layer is pure TSChecklist
npm run lint— 0 warningsnpm test— 8 passed (3 App + 5 API client)npm run build— passesnpm run format:check— passesAI-assisted: implementation generated with AI assistance, reviewed and verified.